Method and apparatus for removable device modification of system configuration

ABSTRACT

A method and apparatus for updating the system configuration settings of a computer system. Embodiments include a remote system configuration system that enables a user to update the system configuration of a target machine from a server machine over a network or similar communications system. Another embodiment includes a system configuration method using a bus master device to write system configuration data into a target computer system.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a Divisional of U.S. patent application Ser. No.10/747,319 filed on Dec. 23, 2003 entitled “Method and Apparatus forRemote Modification of System Configuration.”

BACKGROUND

1. Field

Embodiments of the invention relate to computer system configurations.Specifically, embodiments relate to remotely changing the systemconfiguration and updating the system configuration utilizing a busmaster device.

2. Background

A computer system includes multiple devices that are necessary for itsfunctioning. These devices must each be started or initialized when thesystem is powered on or restarted. Most computer systems include asystem configuration manager program that handles the basic start up andinitialization of the computer system.

In some computer systems the basic start up and initialization programor system configuration manager is referred to as the basic input-outputsystem (BIOS). The computer system after power up or restart begins byexecuting the first instruction of the BIOS. The BIOS initializes thechipset, tests and initializes system memory, and tests and initializesperipheral device functionality. This process is collectively known asPower-on Self Test (POST). After system devices have been properlyinitialized the BIOS loads a boot-loader program. The boot-loaderprogram is stored in the designated boot sector of a storage device suchas a fixed disk. The boot-loader starts the operating system. Theoperating system then takes control of the computer system.

BIOS code is firmware that is stored in a flash memory device. The BIOScode uses configuration data to program user configurable settingsduring system POST. BIOS configuration data is stored in a nonvolatilememory that is composed of complementary metal oxide semiconductors(CMOS). CMOS is an energy efficient technology allowing it to besupported by a back up battery when a computer system is disconnectedfrom its main power source. Non-volatile data used during POST includesreal time clock (RTC) date and time data, drive configurations, systemmemory settings, operating system settings, serial and parallel portsettings and other system settings.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the invention are illustrated by way of example and notby way of limitation in the figures of the accompanying drawings inwhich like references indicate similar elements. It should be noted thatdifferent references to “an” or “one” embodiment in this disclosure arenot necessarily to the same embodiment, and such references mean atleast one.

FIG. 1 is a diagram of one embodiment of a computer system.

FIG. 2 is a diagram of one embodiment of a network including a computersystem.

FIG. 3 is a flowchart of one embodiment of a process for remotelyupdating a system.

FIG. 4 is a flowchart of one embodiment of a process for performing acomputer system initialization during start up or restart.

FIG. 5 is a flowchart of one embodiment of a process for performing abus master update.

DETAILED DESCRIPTION

FIG. 1 is a diagram of one embodiment of a computer system. In oneembodiment, computer system 101 may include a central processing unit(CPU) 103 to execute instructions. In another embodiment, computersystem 101 may include multiple processors. CPU 103 may be located on amainboard. In an embodiment with multiple processors, each processor maybe located on or attached to the same mainboard or on separatemainboards. CPU 103 may be in communication with a memory hub 105 orsimilar device.

In one embodiment, memory hub 105 provides a communication link betweenCPU 103 and system memory 109, input-output (I/O) hub 111 and similardevices such as graphics processor 107. In one embodiment, memory hub105 may be a ‘North Bridge’ chipset or similar device.

In one embodiment, system memory 109 may be a random access memory (RAM)module or set of modules. In one embodiment, system memory 109 may becomposed of synchronized dynamic random access memory (SDRAM), doubledata rate (DDR) RAM or similar memory storage devices. System memory 109may be used by computer system 101 to store application data,configuration data and similar data. System memory 109 may be volatilememory that loses data when computer system 101 powers down.

In one embodiment, other devices may be connected to memory hub 105 suchas a graphics processor 107. Graphics processor 107 may be locateddirectly on the mainboard. In another embodiment, graphics processor 107may be located on a separate board attached to the mainboard through aninterconnect or port. For example, graphics processor 107 may be locatedon a peripheral card attached to the mainboard through an acceleratedgraphics port (AGP) slot or similar connection. A graphics card orgraphics processor 107 may be connected to a display device 123. In oneembodiment, display device 123 may be a cathode ray tube (CRT) device,liquid crystal display (LCD), plasma device or similar display device.

In one embodiment, memory hub 105 may be in communication with an I/Ohub 111. I/O hub 111 provides communication with a set of I/O devicesand similar devices such as storage device 125, complementary metaloxide semiconductor (CMOS) device 113 or similar memory device, basicinput-output system (BIOS) 115, universal serial bus (USB) controller117, network device 119 and similar devices. In one embodiment, I/O hub111 may be a ‘South Bridge’ chipset or similar device. In anotherembodiment, memory hub 105 and I/O hub 111 may be a single device.

In one embodiment, storage device 125 is a non-volatile storage devicesuch as a fixed disk, physical drive, optical drive, magnetic drive orsimilar device. Storage device 125 may be used to store applicationdata, operating system data and similar system data. In one embodiment,computer system 101 may include a removable media drive 129. A removablemedia drive may be a disk drive, CDROM drive, DVD drive or similardevice. In one embodiment, CMOS 113 may store system configurationinformation, real time clock data (RTC), BIOS data and similarinformation. CMOS 113 may be a battery backed up memory device orsimilar non-volatile storage system. BIOS 115 manages systemconfiguration and initialization. BIOS 115 default data may be stored inCMOS 113. In one embodiment, CMOS 113 and BIOS 115 are part of the samedevice.

In one embodiment, a USB controller 117 may be connected to I/O hub 111.USB controller 117 may be a type of microcontroller that manages a USB.In one embodiment, USB controller 117 may function as an input devicecontroller serving as an interface between computer system 101 and USBinput device 121. In an exemplary embodiment, USB controller 117 maymanage a set of input devices that may include a mouse, printer, web camand similar devices.

In one embodiment, other devices such as a network device 119 may be incommunication with I/O Hub 111. Network device 119 may be a modem,network card, wireless device or similar device. In one embodiment,network device 119 may be integrated into the mainboard. In anotherembodiment, network device 119 may be a peripheral card connected to themainboard through a Peripheral Component Interconnect (PCI), PCI Expressslot or similar interconnect.

FIG. 2 is a diagram of one embodiment of a system including a remotesystem configuration updating mechanism. In one embodiment, computersystem 101 may be a local machine that is connected to a network 213. Asused herein, the term ‘local machine’ is a computer system with a systemconfiguration manager to update the configuration of the computersystem. A ‘remote’ machine or application is connected to the localmachine through a network or similar mechanism. Computer system 101 maybe a workstation, laptop, desktop or similar computer system. Computersystem 101 may be connected to network 213 through network device 119.Network 213 may be a local area network (LAN), wide area network (WAN),the Internet or similar network. As used herein, the term ‘systemconfiguration data’ refers to user configurable settings and hardwaresettings of a computer system that are set by a system configurationmanager such as BIOS 115. User configurable settings typically includeoperating system (OS), power management and other general settings.Hardware settings may include processor, memory, bus, graphics processorand similar speed and latency settings. Hardware settings may alsoinclude component capacities and similar configuration data.

In one embodiment, computer system 101 may contain a local client module203. Local client module 203 may be a software application or a hardwaredevice that communicates with server module 211. The operation of localclient module 203 is described in further detail below. Local clientmodule 203 may be stored in storage device 125, CMOS 113, removablemedia drive 129 or similar storage location.

In one embodiment, network 213 may be used to connect multiple computersystems together. Additional computer systems such as local machine 205may also run a local client module 207 to communicate with server module211. Server 209 may be connected to network 213 using a network devicesuch as a network card, modem, wireless device or similar device. Server209 may run a server module 211. Server module 211 may be an applicationthat is utilized to generate and monitor system configuration data forthe various local machines 101, 205 connected to network 213. In oneembodiment, server 209 may be a dedicated system, desktop system, laptopsystem, handheld system or similar system for providing a managementtool for the computer systems connected to network 213. In anotherembodiment, server 209 may be a shared system running otherapplications.

In one embodiment, server module 211 provides a graphical user interface(GUI) to allow a user to monitor and modify the system configurations ofcomputers networked with server 209. In another embodiment, theinterface provided by server module 211 may not be graphics-based, butrather text-based or another interface may be provided. Server module211 may communicate with local client modules 203, 207 over network 213to obtain configuration data for each machine and to send new or updatedconfiguration information to the client modules 203, 207. The messagesmay be formatted in a manner appropriate for communicating systemconfiguration data using any suitable communication protocol. In oneembodiment, server module 211 similarly communicates and receives datafrom multiple client modules 203, 207. Server module 211 may sendseparate configuration messages to each client module 203, 207 or maybroadcast configuration data to multiple client modules 203, 207.

FIG. 3 is a flowchart of one embodiment of a process for remotelyupdating a system. In one embodiment, each computer system may have adefault or local system configuration data that is used during theinitialization of the computer. This default configuration may beupdated at the machine by utilization of a system configuration managersuch as BIOS 115 or a similar application. As used herein the term‘system configuration manager’ refers to a program or module thatmanages the system configuration of a computer system locally. A BIOSmay be an example of such a system configuration manager. The systemconfiguration manager may be accessed during initialization of acomputer system by the manual entry of a key sequence on the keyboard ofthe computer system. System settings that may be managed by the systemconfiguration manager include device storage sizes, device speeds, CPUspeed, system bus speeds, graphics settings, boot settings and similarsystem settings.

In one embodiment, a user may remotely access and alter system settingswithout manual input at the machine to be reconfigured. A user mayutilize a server module 211 to view current system settings or togenerate a new configuration for the target computer system. The servermodule 211 running on server 209 may send the configuration informationover network 213 to a local machine 101 (block 313). For example, asystem administrator may update the operating system software of localmachine 101 either locally or remotely. The update of the operatingsystem software may allow the utilization of larger fixed disk storagesizes than was supported by the operating system before the update.Local machine 101 may contain a fixed disk 125 that is larger than wassupported by the operating system before the update. The systemadministrator may create a new system configuration for local machine101 including an increased size for the fixed disk 125 to better utilizefixed disk 125. This new configuration may then be sent to local machine101.

In one embodiment, a client module 203 running on the local machine 101may receive the incoming configuration data from a network device 119 orsimilar method (block 315). In another embodiment, the configurationdata may be applicable to multiple machines and may be broadcast to aset of machines on network 213. For example, client module 203 mayreceive the new configuration sent by the system administrator viaserver module 211 to enable the use of a larger space on fixed disk 125.

In one embodiment, client module 203 may write the receivedconfiguration data into a predefined memory space (block 317). Thepredefined memory space may be located in system memory 109, fixedstorage device 125, removable media drive 129, CMOS or similar storagedevice. In another embodiment, a specialized memory device may be usedto store the received system configuration data. In a furtherembodiment, system memory 109 or similar storage device may be modifiedor provided with a persistent power supply such as a battery back up tomaintain the system configuration data during power down or reboot ofcomputer system 101. For example, the new system configuration createdby the system administrator may be written into system memory 109 orstorage device 125. As used herein, the term ‘reboot’ refers to arestarting of a computer system. This restarting may or may not cause aloss of power to volatile memory and loss of data. As used herein the‘predefined memory area’ refers to the storage area in any appropriatememory device or storage device or a combination of multiple deviceswhere new or updated system configuration data may be stored before itis used to update the default configuration data.

In one embodiment, the received system configuration data may be writtento the predefined memory area and stored in any appropriate format. Inone embodiment, the format of the stored system configuration data maymatch the format of the default system configuration data stored in CMOS113 or other location in computer system 101. As used herein ‘defaultsystem configuration data’ refers to system configuration data that maybe stored in a non-volatile storage device such as CMOS 113 and used toinitialize a computer system until new or updated system configurationdata updates it. This default system configuration data may have beenpreviously updated or changed. In a further embodiment, only changes tothe current system configuration are transmitted by server module 211and saved by client module 203.

In one embodiment, a passive updating scheme 337 may be used to updatethe system configuration with the received configuration data. In oneembodiment, when a computer system 101 is rebooted or computer system101 is powered on the system configuration manager may check todetermine if changes to the system configuration are present (block319). If there are changes present then the changes or new configurationmay be used to modify or replace the default system configuration datastored by CMOS 113 or other appropriate storage device (block 321). Forexample, after a new or updated configuration is received from a systemadministrator and stored in the predefined memory area either the nexttime the system is rebooted or powered on then the system configurationmanager examines the predefined memory space to determine if it containsnew or changed configuration data. If new or updated data is found, thenit may be copied into CMOS 113 to replace or modify the default systemconfiguration data. In one embodiment, the detection of updated or newdata involves a comparison of the default configuration data with thereceived system configuration data. In another embodiment, when thereceived system configuration data is stored by client module 203 a flagor similar indicator may be set. This indicator may be checked on rebootor power on to determine if new or updated data has been received.

In one embodiment, after CMOS 113 or similar storage device for thesystem configuration data is updated or replaced, the new default systemconfiguration data is used to initialize or start up computer system 101(block 323). In some circumstances this may require another rebootbefore the system configuration changes may be implemented. Changes tosystem configuration settings that are currently utilized or alreadyinitialized by the system configuration manager at the time of theupdating of the system configuration setting may not be resettable whilecomputer system 101 is running. For example, after copying the newconfiguration settings sent by the system administrator into CMOS 113,BIOS 115 may reboot the computer. During the subsequent reboot the newsystem configuration settings and data may be used.

In another embodiment, an active system 325 may be used to update systemconfiguration settings. In one embodiment, after client module 203 hasreceived and stored system configuration data from server module 211, itmay notify the system configuration manager, such as BIOS 115, of thereception of updated or new configuration data (block 327). In oneembodiment, a system configuration manager may examine the updated ornew configuration data to determine if the change of configurationsettings can be made while computer system 101 is running. In anotherembodiment, server module 211 may send an indication of whether thechanges can be done while computer system 101 is running. In this case,the system configuration manager checks for this indication. Forexample, the system configuration update received by computer system 101may be to adjust the size of fixed disk 125 to increase its recognizedcapacity. Server module 211 may determine that BIOS 115 and theoperating system may be able to handle the dynamic change in capacity offixed disk drive 125 and not require a reboot of computer system 101.

In one embodiment, after the system configuration manager is notifiedregarding the new or updated configuration data, it may copy the changesor new settings into the storage area for the default configurationsettings such as CMOS 113 (block 329). A check may then be made todetermine if the changes in the settings require a reboot of computersystem 101 (block 331). This may be accomplished by checking for adirect indication from server module 211 or by analyzing the type ofchanges to the settings that were made. For example, BIOS 115 mayimplement the increase in recognized capacity of a fixed disk 125. Itmay then make a determination whether this configuration change requiresa reboot of computer system 101 to completely implement the changewithout causing errors.

In one embodiment, if the changes to the system configuration do notrequire a reboot then the changes may be implemented and computer system101 continues to function with the changes indicated by the new systemconfiguration settings (block 333). If the changes to the systemconfiguration require that the system be rebooted, then client module203, system configuration manager, or the operating system may initiatea reboot of computer system 101 to complete the change in systemconfiguration settings.

FIG. 4 is a flowchart of one embodiment of a process for performing asystem initialization. In one embodiment, system initialization mayoccur when computer system 101 is powered on or reset (block 401).Computer system 101 begins execution of a system configuration managerwhich may start the initialization of basic system components (block403). Basic system components may include the chipset, RTC and similarcomponents. Initialization may continue by configuring all plug and playdevices such as modems, graphics cards, network cards and similarperipheral cards and devices (block 405).

In one embodiment, a similar system configuration manager may check thepredefined memory area to determine if the default system configurationneeds to be updated (block 407). This may be determined throughcomparison between the default system configuration data and new orupdated system configuration data or by detecting an update indicator.The system configuration manager may then begin the process of copyingover or updating the default system configuration settings saved in CMOS113 or similar non-volatile storage. The system configuration managermay then start to alter system settings in accordance with the changesindicated in the updated or new configuration data.

In one embodiment, the system configuration manager may determinewhether it may be necessary to reboot computer system 101 (block 411).This may be determined by detecting a stored indicator requiring rebootor by analysis of the changes to the system settings in the new systemconfiguration. If a reboot is necessary the reboot process may berestarted with the new configuration data having been stored in thedefault configuration space. If the reboot is not necessary, then thesystem configuration manager may continue and complete theinitialization of the components of computer system 101 (block 413).When the initialization is complete, the system configuration managermay call a boot-load program to start up the appropriate operatingsystem for computer system 101 (block 415). The operating system thentakes primary control over computer system 101.

In one embodiment, server module 211 may send to client module 203additional commands and information. Server module 211 may indicatewhether the handling of configuration information is to be handled usingan active method 325 or a passive method 337. Server module 211 maydetermine when or if the target computer system should reboot during asystem reconfiguration process.

FIG. 5 is a flowchart of one embodiment of a process of performing asystem configuration update utilizing a bus master device. As usedherein, a ‘bus master device’ is any device that is capable of drivingthe internal bus of computer system 101. This enables the device to readand write to the memory space of computer system 101. A bus masterdevice may be attached to computer system 101 as a USB device 121,serial device, wireless device, infra red device or similar devicecoupled to a USB port, serial port, parallel port, 1394 port (firewire)or similar port or connection device of computer system 101.

In one embodiment, the bus master device may be capable of interfacingwith a system management application similar to server module 211. Thissystem management application may be able to monitor the systemconfiguration of a target computer system 101.

In one embodiment, the system management application may generate asystem configuration and communicate this configuration to bus masterdevice 121 (block 501). In one embodiment, bus master device 121 may becapable of storing the configuration. In another embodiment, bus masterdevice 121 may retransmit the system configuration data by writing it tothe predefined memory space (block 503). For example, a USB device witha memory module may be connected to a system configuration managementapplication that loads a system configuration into the memory module ofthe USB device. The USB device may then be connected to a local machine101 and the USB device may load the system configuration data from itsinternal memory module into the predefined memory space of local machine101.

In one embodiment, bus master device 121 may support both a passivemethod 505 and an active method 507 of updating the system configurationof a target machine. In a passive method of updating the systemconfiguration the update may occur during the next reboot or power on ofcomputer system 101. During the reboot process the system configurationmanager may check for updates to the system configuration (block 509).In one embodiment, the system configuration manager may make acomparison between the default system configuration stored in CMOS 113or similar non-volatile storage and new system configuration data storedin the predefined memory space. In another embodiment, the systemconfiguration manager may detect an indicator that changes or a newconfiguration is to be implemented.

In one embodiment, the system configuration manager will update thedefault system configuration data in CMOS or similar non-volatilestorage with the new system configuration data during the start up orreboot (block 511). The system configuration manager may then implementthe new configuration in computer system 101 (block 513). In anotherembodiment, the system configuration manager may reboot computer system101 to complete the implementation of the updated system configurationsettings.

In one embodiment, an active update system 507 may be used. After thebus master has stored the new or updated system configuration data inthe predefined memory space, the bus master may notify or provide anindicator to the system configuration manager that system configurationsettings are to be changed (block 515). System configuration manager maythen copy the new or updated configuration data from the predefinedmemory space to the default storage area such as CMOS 113 or similarnon-volatile memory device or similarly update the default systemconfiguration data (block 517).

In one embodiment, the system configuration manager may make a decisionwhether it is necessary to reboot to complete the implementation of thesystem settings (block 519). The system configuration manager maydetermine whether reboot is necessary by analyzing the types of systemconfiguration changes that need to be made. In another embodiment, thesystem configuration manager may check for an indicator received fromthe bus master or stored by the bus master in a predefined location.

In one embodiment, a reboot may be necessary to complete theimplementation of the updated or new system configuration settings.System configuration manager or operating system may initiate the rebootof the system and complete the implementation of the new default systemsettings during the start up sequence. In another embodiment, a rebootis not necessary to effect the changes to the system settings. Thesystem configuration manager implements the updated or new configurationdata stored in the default memory storage area and the operation ofcomputer system continues.

In one embodiment, system configuration data may also be utilized by anadvanced configuration and power management interface (ACPI) or similarinterface. ACPI provides methods such as load and unload methods whichfacilitate the loading and unloading of definition blocks used toconfigure hardware devices in the computer system. In one embodiment,where a reboot of the system is not necessary to implement systemconfiguration changes, ACPI definition blocks related to the systemchanges may be loaded or unloaded to implement modifications to thesystem configuration. This may include adding new methods in adefinition block. These methods may be written in ACPI source language(ASL).

In one embodiment, the improved system configuration updating system maybe implemented as software and stored on a machine readable medium. Asused herein a machine readable medium may be a medium capable of storingor transmitting data and similar information such as a fixed disk,physical drive, CDROM, DVD, optical disk, wireless transmission, opticaltransmission, infra red transmission, and similar storage devices andtransmission systems.

In the foregoing specification, the invention has been described withreference to specific embodiments thereof. It will, however, be evidentthat various modifications and changes can be made thereto withoutdeparting from the broader spirit and scope of the embodiments of theinvention as set forth in the appended claims. The specification anddrawings are, accordingly, to be regarded in an illustrative rather thana restrictive sense.

1. An apparatus comprising: a memory device; a bus master deviceremovably coupled to the apparatus to write system configuration data toa predefined memory space in the memory device; and a systemconfiguration manager coupled to the memory to adjust system settings ofthe apparatus based on basic input output system (BIOS) configurationdata stored in the predefined memory space.
 2. The apparatus of claim 1,wherein the bus master device is removably coupled to the memory device.3. The apparatus of claim 1, wherein the bus master device communicateswith the memory device over one of a universal serial bus (USB), serialport, parallel port and 1394 port.
 4. An apparatus comprising: a clientmodule to receive only differences between an existing basic inputoutput system (BIOS) configuration data and an updated BIOSconfiguration data over a network from a remote module; a memory devicecoupled to the client module to store received differences between theexisting BIOS configuration data and the updated BIOS configurationdata; and a system configuration module coupled to the memory module toadjust system settings based on the received differences between theexisting BIOS configuration data and the updated BIOS configurationdata.
 5. The apparatus of claim 4, further comprising: a processor toexecute the client module; and a non-volatile memory device to store thesystem configuration module and BIOS configuration data.
 6. Theapparatus of claim 4, further comprising: a network device coupled tothe client module to enable communication with a remote machine.
 7. Theapparatus of claim 4, wherein the system configuration module comparesthe existing BIOS configuration data with the updated BIOS configurationdata, and decides if a reboot is required.
 8. An apparatus comprising: aclient module to receive only differences between an existing basicinput output system (BIOS) configuration data and an updated BIOSconfiguration data from a bus master device removably coupled to amemory device; the memory device coupled to the client module to storereceived differences between the existing BIOS configuration data andthe updated BIOS configuration data; and a system configuration modulecoupled to the memory module to adjust system settings based on thereceived differences between the existing BIOS configuration data andthe updated BIOS configuration data.
 9. The apparatus of claim 8,further comprising: a processor to execute the client module; and anon-volatile memory device to store the system configuration module andBIOS configuration data.
 10. The apparatus of claim 8, furthercomprising: a controller device coupled to the client module to enablecommunication with the bus master device.
 11. The apparatus of claim 8,wherein the system configuration module compares the existing BIOSconfiguration data with the updated BIOS configuration data, and decidesif a reboot is required.
 12. A method comprising: receiving basic inputoutput system (BIOS) configuration data and handling information toidentify an active update or a passive update from a bus master deviceremovably coupled to a memory; storing received BIOS configuration datain the memory; updating a system configuration according to the handlinginformation; and checking if a reboot is required, wherein the checkingis performed by a software program.
 13. The method of claim 12, whereinthe received system configuration data is stored in a predefined memoryspace.
 14. The method of claim 13, further comprising: checking forchanges to the system configuration in stored configuration data in thepredefined memory space.
 15. The method of claim 12, wherein theupdating the system configuration occurs during a reboot sequence. 16.The method of claim 12, further comprising: effecting system changesbased on received BIOS configuration data during operation of thesystem.
 17. The method of claim 12, further comprising: notifying asystem management module of system configuration changes.
 18. The methodof claim 12, further comprising comparing the received BIOSconfiguration data with existing BIOS configuration data, and whereinstoring comprises storing differences between the received BIOSconfiguration data and the existing BIOS configuration data.
 19. Themethod of claim 12, further comprising: coupling the bus master deviceto the memory prior to receiving; and decoupling the bus master devicefrom the memory storing the received BIOS configuration data afterstoring and prior to updating.
 20. The method of claim 12, whereinchecking comprises one of examining the received BIOS configuration datato determine that updating can occur while a computer system is running,and checking a foreign indication from the remote source to identifythat the updating can be done while the computer system is running. 21.The method of claim 12, wherein the software program is one of a systemconfiguration manager program and a basic input/output system (BIOS),and further comprising the software program performing a power-on selftest.